From: Olaf Hering Date: Fri, 20 May 2011 17:09:26 +0000 (+0100) Subject: hotplug: fix busy loop device detection X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10332 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=d55ae1cc8f5259cf31fcaf189056c082145487ef;p=xen.git hotplug: fix busy loop device detection Improve busy loop device detection after changeset 22773:02c0af2bf280 The intention is not to find the file to be mounted in the losetup -a output. What matters are existing mounted files with the same dev:inode as the new file. So the fix is to apply variable expansion which happens only without double quotes. Otherwise $dev will contain newlines for hardlinked files, as mentioned in the commit message from the changeset above. losetup -a does also truncate long filenames to 62 chars due to ioctl limitations. This part is fixed with 2.6.37 where the filename can be obtained from sysfs. As a result very long filenames will be missed. Signed-off-by: Olaf Hering Acked-by: Ian Jackson Committed-by: Ian Jackson --- diff --git a/tools/hotplug/Linux/block b/tools/hotplug/Linux/block index 06de5c92a2..fb9df6f357 100644 --- a/tools/hotplug/Linux/block +++ b/tools/hotplug/Linux/block @@ -280,8 +280,8 @@ mount it read-write in a guest domain." fi shared_list=$(losetup -a | - sed -n -e "s@^\([^:]\+\)\(:[[:blank:]]\[${dev}\]:${inode}[[:blank:]](${file})\)@\1@p" ) - for dev in "$shared_list" + sed -n -e "s@^\([^:]\+\)\(:[[:blank:]]\[${dev}\]:${inode}[[:blank:]](.*)\)@\1@p" ) + for dev in $shared_list do if [ -n "$dev" ] then